package work.mediway.mdm.biz.service.dict;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

import work.mediway.mdm.core.page.QueryRequest;
import work.mediway.mdm.biz.dto.dict.CodeSystemDTO;
import work.mediway.mdm.biz.dto.dict.DictListDTO;
import work.mediway.mdm.biz.entity.dict.CtCodeSystem;
import work.mediway.mdm.biz.vo.dict.CtCodeSystemVO;
import work.mediway.mdm.biz.vo.dict.DictListVO;

/**
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2021/1/6
 */
public interface CtCodeSystemService extends IService<CtCodeSystem> {

    /**
     * 查询字典详细信息
     *
     * @param dictDTO DictDetailDTO
     * @return Page<DictDetailVO>
     */
    Page<DictListVO> pageCodeSystem(DictListDTO dictDTO);

    /**
     * 更新信息
     *
     * @param codeSystemDTO CodeSystemDTO
     */
    void modifyDictTable(CodeSystemDTO codeSystemDTO);

    /**
     * 查询字典详细信息（所有）
     *
     * @param listDTO      DictListDTO
     * @param queryRequest QueryRequest
     * @return Page<DictListVO>
     */
    Page<DictListVO> pageCodeSystemAll(DictListDTO listDTO, QueryRequest queryRequest);

    /**
     * 更新CodeSystemCode表信息
     *
     * @param codeSystems List<CodeSystemDTO>
     */
    void updateDataCountByCodeBatch(List<CodeSystemDTO> codeSystems);

    /**
     * 更新CodeSystemCode表信息
     *
     * @param codeSystemDTO List<CodeSystemDTO>
     */
    void updateDataCountByCode(CodeSystemDTO codeSystemDTO);

    /**
     * 获取表模型列表
     *
     * @param codeSystem   CodeSystemDTO
     * @param queryRequest QueryRequest
     * @return List<CtCodeSystemVO>
     */
    List<CtCodeSystemVO> selectAllTable(CodeSystemDTO codeSystem, QueryRequest queryRequest);

    /**
     * 存储信息
     *
     * @param codeSystem CtCodeSystem
     */
    void saveCodeSystem(CtCodeSystem codeSystem);

    /**
     * 更新信息
     *
     * @param codeSystem CtCodeSystem
     */
    void updateCodeSystemByCode(CtCodeSystem codeSystem);
}

